/**
* <p> title ： ExcelUtil.java</p>
* <p> package ： com.yang.serialport.utils</p>
* <p> description ：TODO</p>
* <p> copyright ： 哈尔滨工业大学(C) 2019</p>
* <p> company ： 哈尔滨工业大学AS&MT</p>
* <p> author ： 金雪松 jinxuesong@163.com</p>
* <p> date ： 2019年11月6日 下午2:55:06</p>
* <p> version ： v1.0 </p>
*
* Modification  History:
* Date         Author        Version        Discription
* -----------------------------------------------------------------------------------
* 2019年11月6日       金雪松          1.0             1.0
* Why & What is modified: <修改原因描述>
*/
package com.akeil.flash.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.lang.reflect.Method;
import java.text.DecimalFormat;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

import com.akeil.flash.pojo.Data;

/**
 * <p> classname ： ExcelUtil</p>
 * <p> description ：TODO</p>
 * <p> author ： 金雪松 jinxuesong@163.com</p>
 * <p> date ： 2019年11月6日 下午2:55:06</p>
 */
public class ExcelUtil {
	/**
     * 获取属性值
     * @param fieldName 字段名称
     * @param o 对象
     * @return  Object
     */
	public static final String[] DATA_COLUMN_NAME = { "序号", "样品名称", "样品编号", "预置温度（℃）", "闪点（℃）", "测试时间" };

	private static Object getFieldValueByName(String fieldName, Object o) {
		try {
			String firstLetter = fieldName.substring(0, 1).toUpperCase();
			String getter = "get" + firstLetter + fieldName.substring(1); // 获取方法名
			Method method = o.getClass().getMethod(getter, new Class[] {}); // 获取方法对象
			Object value = method.invoke(o, new Object[] {}); // 用invoke调用此对象的get字段方法
			return value; // 返回值
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

   /**
    * 将list集合转成Excel文件
    * @param list  对象集合
    * @param path  输出路径
    * @return   返回文件路径
    */
   public static String createExcel(List<Data> datas,String filename){
	   DecimalFormat df = new DecimalFormat("0.0000");
	   DecimalFormat df3 = new DecimalFormat("0.000");
	   String result = "";
	   if(datas.size()==0||datas==null){
           result = "没有对象信息";
       }else{
           Workbook workbook = null;
    	   Sheet sheet = null;
    	   
    	   File file = null;
    	   try{
    		   //file = new File(path.concat(File.separator).concat(name));
    		   file = new File(filename);
    		   workbook = new HSSFWorkbook();
    		   sheet = workbook.createSheet("试验结果");
    		   sheet.setColumnWidth(10, 20 * 256);
    		   int i = 0;
    		   int j = 0;
    		   Row row = sheet.createRow(i);
    		   for(String f : DATA_COLUMN_NAME){
    			   Cell cell = row.createCell(j);
    			   cell.setCellValue(f); 
    			   j++;
    		   }
    		   Cell cell = null;
    		   for (Data data : datas) {
    			   i++;
    			   row = sheet.createRow(i);
    			   {
	    			   j = 0;
	    			   cell = row.createCell(j);
	    			   cell.setCellValue(data.getInd() + "");
	    			   j++;
	    			   
	    			   cell = row.createCell(j);
	    			   cell.setCellValue((data.getSamplename() == null) ? "" : data.getSamplename() + "" );
	    			   j++;
	    			   
	    			   cell = row.createCell(j);
	    			   cell.setCellValue((data.getSampleno() == null) ? "" : data.getSampleno() + "");
	    			   j++;
	    			   
	    			   cell = row.createCell(j);
	    			   cell.setCellValue((data.getPretemperature() == null) ? "" : df.format(data.getPretemperature()) + "");
	    			   j++;
	    			   
	    			   cell = row.createCell(j);
	    			   cell.setCellValue((data.getFlashtemperature() == null) ? "" : df.format(data.getFlashtemperature()) + "");
	    			   j++;
	    			   
	    			   cell = row.createCell(j);
	    			   cell.setCellValue((data.getTesttime() == null) ? "" : data.getTesttime() + "");
	    			   j++;
    			   }
    		   }
    		   FileOutputStream out = new FileOutputStream(file);
    		   workbook.write(out);
    		   out.close();
    	   }catch(Exception e){
    		   result = "SystemException";
    		   e.printStackTrace();
    	   }
       }
	   
       return result;   //最后输出文件路径
   }
}
